home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1997-01-28 | 4.7 KB | 176 lines |
- 10 'HELIX - Helical Winding - 23 JAN 94 rev.27 SEP 96
- 20 IF EX$=""THEN EX$="EXIT"
- 30 CLS:KEY OFF
- 40 COLOR 7,0,1
- 50 PI=3.14159
- 60 E$=STRING$(80,32)
- 70 E1$=STRING$(7,32)
- 80 UL$=STRING$(80,205)
- 90 U1$="####.###"
- 100 '
- 110 '.....start
- 120 CLS:P=0:N=0:LW=0:LC=0
- 130 COLOR 15,2
- 140 PRINT " HELICAL WINDINGS";TAB(57);"by George Murphy VE3ERP ";
- 150 COLOR 1,0:PRINT STRING$(80,223);
- 160 COLOR 7,0
- 170 '
- 180 GOSUB 1510
- 190 PRINT UL$;
- 200 PRINT " Please enter all dimensions in the same units, e.g. inches, ";
- 210 PRINT "millimetres, etc."
- 220 PRINT
- 230 PRINT " If you do not know the data requested, press <ENTER> to bypass ";
- 240 PRINT "the request."
- 250 PRINT " If the data is critical, you will be asked for it again."
- 260 PRINT UL$;
- 270 COLOR 0,7:LOCATE CSRLIN,22
- 280 PRINT " Press 1 to continue or 0 to EXIT....."
- 290 COLOR 7,0
- 300 Z$=INKEY$:IF Z$=""THEN 300
- 310 IF Z$="0"THEN CLS:RUN EX$
- 320 IF Z$="1"THEN 340
- 330 GOTO 300
- 340 LOCATE CSRLIN-1:PRINT E$;:LOCATE CSRLIN-1
- 350 INPUT " ENTER: Filament outside diameter.........................";OD
- 360 IF OD=0 THEN LOCATE CSRLIN-1:PRINT E$;:LOCATE CSRLIN-1:GOTO 350
- 370 LOCATE CSRLIN-1:PRINT E1$;:LOCATE CSRLIN,59:PRINT USING U1$;OD
- 380 '
- 390 INPUT " ENTER: Winding form outside diameter.....................";CD
- 400 IF CD=0 THEN LOCATE CSRLIN-1:PRINT E$;:LOCATE CSRLIN-1:GOTO 390
- 410 LOCATE CSRLIN-1:PRINT E1$;:LOCATE CSRLIN,59:PRINT USING U1$;CD
- 420 '
- 430 MD=CD+OD 'mean winding diameter
- 440 C=PI*MD 'mean circumference
- 450 '
- 460 IF P THEN 510
- 470 INPUT " ENTER: Pitch (centre-to-centre distance between turns)...";P
- 480 LOCATE CSRLIN-1:PRINT E$;:LOCATE CSRLIN-1
- 490 GOSUB 1220
- 500 '
- 510 IF N THEN 560
- 520 INPUT " ENTER: Number of turns...................................";N
- 530 LOCATE CSRLIN-1:PRINT E$;:LOCATE CSRLIN-1
- 540 GOSUB 1220
- 550 '
- 560 IF LW THEN 600
- 570 INPUT " ENTER: Length of helical winding.........................";LW
- 580 LOCATE CSRLIN-1:PRINT E$;:LOCATE CSRLIN-1
- 590 GOSUB 1220
- 600 '
- 610 IF LC THEN 660
- 620 INPUT " ENTER: Length of filament................................";LC
- 630 LOCATE CSRLIN-1:PRINT E$;:LOCATE CSRLIN-1
- 640 GOSUB 1220
- 650 '
- 660 IF P*N*LW*LC THEN 690
- 670 GOTO 460
- 680 '
- 690 '.....display
- 700 IF P<OD OR LW<OD*N THEN 1420
- 710 PRINT " Pitch (centre-to-centre distance between turns)...";
- 720 PRINT USING U1$;P
- 730 PA=ATN(P/C)*180/3.14159
- 740 PRINT " Pitch Angle (slope of windings)...................";
- 750 PRINT USING U1$;PA;:PRINT "<UNK! {00F8}>"
- 760 PRINT " Length of filament in one (1) turn................";
- 770 PRINT USING U1$;T
- 780 PRINT " Number of turns...................................";
- 790 PRINT USING U1$;N
- 800 PRINT " Length of helical winding.........................";
- 810 PRINT USING U1$;LW
- 820 TPI=N/LW
- 830 PRINT " Turns per inch....................................";
- 840 PRINT USING U1$;TPI
- 850 RA=LW/(CD+OD)
- 860 PRINT " Length-to-Diameter ratio..........................";
- 870 PRINT USING U1$;RA;:PRINT ":1"
- 880 PRINT " Length of filament................................";
- 890 PRINT USING U1$;LC
- 900 PRINT UL$;
- 910 VIEW PRINT 3 TO 11:CLS:VIEW PRINT
- 920 LN=17:GOSUB 1630
- 930 LOCATE 25,1:PRINT E$;
- 940 LOCATE 25,13:COLOR 15,2
- 950 PRINT " Would you like to see a helix winding table? (y/n) ";
- 960 Z$=INKEY$
- 970 IF Z$="n"THEN COLOR 7,0:GOTO 110 'start
- 980 IF Z$="y"THEN 1010
- 990 GOTO 960
- 1000 '
- 1010 '.....helix winding table
- 1020 COLOR 7,0
- 1030 VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
- 1040 Y$="DISTANCES OF EACH FULL WINDING FROM END OF HELIX"
- 1050 PRINT TAB(INT(80-LEN(Y$))/2);Y$
- 1060 N$=STR$(INT(N*100+0.5)/100)
- 1070 LW$=STR$(INT(LW*100)/100)
- 1080 X$=N$+" turn helix"+LW$+" units long"
- 1090 PRINT TAB(INT(80-LEN(X$))/2);X$
- 1100 PRINT TAB(8);
- 1110 PRINT "( Distances are in same unit of measurement as the helix length.)"
- 1120 PRINT UL$;
- 1130 LN=6 'line number
- 1140 FOR Z=1 TO N
- 1150 LN=LN+0.1 '.1 = 10 numbers per line
- 1160 PRINT USING "#####.##";Z*P;
- 1170 IF LN>=24 THEN GOSUB 1630:CLS:LN=0
- 1180 NEXT Z
- 1190 GOSUB 1630
- 1200 GOTO 110 'start
- 1210 '
- 1220 '.....calculate
- 1230 FOR Q=1 TO 3
- 1240 IF T*C<>0 AND T<=C THEN 1420
- 1250 IF T*MD<>0 THEN IF T<PI*MD THEN 1420
- 1260 IF LC*LW<>0 THEN IF LC<LW THEN 1420
- 1270 '
- 1280 IF T=0 AND P*C<>0 THEN T=SQR(P^2+C^2) 'T= length of 1 turn
- 1290 IF T=0 AND LC*N<>0 THEN T=LC/N
- 1300 IF P=0 AND LW*N<>0 THEN P=LW/N 'P= pitch
- 1310 IF P=0 AND C*T<>0 AND T>=C THEN P=SQR(T^2-C^2)
- 1320 IF N=0 AND LW*P<>0 THEN N=LW/P 'N= number of turns
- 1330 IF N=0 AND LC*T<>0 THEN N=LC/T
- 1340 IF N=0 AND LC*LW<>0 THEN N=SQR(LC^2-LW^2)/C
- 1350 IF LW=0 AND P*N<>0 THEN LW=P*N 'LW= length of helical winding
- 1360 IF LC=0 AND T*N<>0 THEN LC=T*N 'LC= length of conductor
- 1370 IF P*OD<>0 AND P<OD THEN 1420
- 1380 IF LC*LW<>0 AND N=0 THEN IF LC<=LW THEN 1420
- 1390 NEXT Q
- 1400 RETURN
- 1410 '
- 1420 '.....error warning
- 1430 BEEP:PRINT " ";:COLOR 11,4
- 1440 PRINT " NOT POSSIBLE - TRY AGAIN ! "
- 1450 COLOR 7,0
- 1460 PRINT " Press any key........"
- 1470 IF INKEY$=""THEN 1470
- 1480 GOTO 110 'start
- 1490 END
- 1500 '
- 1510 '.....preface
- 1520 T=7
- 1530 PRINT TAB(T);
- 1540 PRINT "This program will compute the geometric parameters and dimensions"
- 1550 PRINT TAB(T);
- 1560 PRINT "of a filament wound in the form of a helix of constant diameter"
- 1570 PRINT TAB(T);
- 1580 PRINT "with equal spacing between turns as, for instance, in the case of"
- 1590 PRINT TAB(T);
- 1600 PRINT "spiral wound antenna element."
- 1610 RETURN
- 1620 '
- 1630 'HARDCOPY
- 1640 GOSUB 1750:LOCATE 25,2:COLOR 14,6
- 1650 PRINT " Press 1 to print screen, 2 to print screen & ";
- 1660 PRINT "advance paper, or 3 to continue.";:COLOR 7,0
- 1670 Z$=INKEY$:IF Z$="3"THEN GOSUB 1750:RETURN
- 1680 IF Z$="1"OR Z$="2"THEN GOSUB 1750:GOTO 1700
- 1690 GOTO 1670
- 1700 FOR QX=1 TO 24:FOR QY=1 TO 80
- 1710 LPRINT CHR$(SCREEN(QX,QY));
- 1720 NEXT QY:NEXT QX
- 1730 IF Z$="2"THEN LPRINT CHR$(12)
- 1740 GOTO 1640
- 1750 LOCATE 25,1:PRINT STRING$(80,32);:RETURN
-